\begin{frame}
	\frametitle{Red y comunicaciones}
	\begin{itemize}
			\item Las interfaces de red son FS provistos por el kernel. \pause
			\item El inicio y fin de una conexión se maneja escribiendo en el archivo de control.\pause

	\end{itemize}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Red y comunicaciones}
	\framesubtitle{Cómo abro una conexión?}

\begin{verbatim}
% ls -lp /net/tcp
d-r-xr-xr-x I 0 bootes bootes 0 Feb 23 20:20 0
d-r-xr-xr-x I 0 bootes bootes 0 Feb 23 20:20 1
--rw-rw-rw- I 0 bootes bootes 0 Feb 23 20:20 clone
% ls -lp /net/tcp/0
--rw-rw---- I 0 rob    bootes 0 Feb 23 20:20 ctl
--rw-rw---- I 0 rob    bootes 0 Feb 23 20:20 data
--rw-rw---- I 0 rob    bootes 0 Feb 23 20:20 listen
--r--r--r-- I 0 bootes bootes 0 Feb 23 20:20 local
--r--r--r-- I 0 bootes bootes 0 Feb 23 20:20 remote
--r--r--r-- I 0 bootes bootes 0 Feb 23 20:20 status
%
\end{verbatim}
\end{frame}

\begin{frame}[fragile]
	\frametitle{Red y comunicaciones}
	\framesubtitle{Cómo abro una conexión?}
	\begin{enumerate}
			\item Hago \textit{open} de \textit{/net/tcp/clone} \\ \pause
				Esto reserva una conexión y me devuelve el archivo de control. \pause
			\item Hago \textit{read} del archivo de control. \\ \pause
				Me devuelve el número de conexión. \pause
			\item \textit{local}, \textit{remote} y \textit{status} son para diagnóstico.\pause
			\item Para conectarme escribo \verb+connect 135.104.9.52!23+ en el archivo de control.\pause
			\item Para escuchar escribo \verb+announce 23+ en el archivo de control.\pause
			\item Ahora puedo leer y escribir de \textit{data}.\pause
	\end{enumerate}
\end{frame}

\begin{frame}
	\frametitle{Red y comunicaciones}
	\framesubtitle{}
	\begin{itemize}
			\item Aún teniendo esta estuctura uniforme, no se pueden ocultar todos los detalles 
			del direccionamiento y control de los distintos tipos de redes. \pause
			\item Entonces para evitar esto, existe un \textit{connection server} (cs) \pause
			\item Y qué es? \pause Es un FS montado en una ubicación conocida. \pause 
			\item Y qué hace? \pause Provee un único archivo de control que las aplicaciones usan para saber cómo conectarse.\pause 
			\item Y cómo funciona? \pause La aplicación escribe la dirección simbólica del host y luego lee el nombre del archivo \textit{clone} correspondiente.\pause 
			\item Todo esto adentro de \textit{dial} \pause
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Red y comunicaciones}
	\framesubtitle{Problemas con 9P}
	\begin{itemize}
			\item 9P debe correr sobre un protocolo de transporte confiable 
			con mensajes delimitados. \pause
			\item 9P no tiene mecanismos para recuperarse. \pause
			\item 9P asume que cada vez que lee, lee un mensaje. \pause
			\item TCP no delimita mensajes. \pause
			\item UDP no es confiable. \pause
	\end{itemize}
\end{frame}


\begin{frame}
	\frametitle{Red y comunicaciones}
	\framesubtitle{Protocolo IL - La solución}
	\begin{itemize}
			\item IL (Internet Link) transmite mensajes 9P a través de IP. \pause
			\item Es orientado a conexión. \pause
			\item Provee transmisión confiable de mensajes secuenciados. \pause
			%\item No neesita de control de flujo. Ya que un proceso solo --- \pause
			\item Tiene timeouts adaptativos (como TCP). \pause
			\item En Plan9 la implementación es más pequeña y eficiente que TCP. \pause
			\item Es el protocolo principal. \pause
	\end{itemize}
\end{frame}
